package itheima05;

import java.io.Serializable;

/*
    要想实现序列化和反序列化,类必须实现Serializable接口
        java.io.Serializable接口: 标记型接口 没有任何抽象方法

    静态和瞬态都不能序列化
        1.静态: static修饰的内容,不能被序列化
        2.瞬态: 被transient的内容,不能序列化

    序列号冲突异常

    当类实现Serializable接口后,编译时,根据类的成员变量计算一个long数字(序列号),被保存在.class文件当中
    当序列化对象时,同时在存储对象的文件中,也保存一份此序列号

    只要修改类的成员,就会重新计算一个long数字(序列号)

    当进行反序列化,从文件中读取对象时,会用存储对象文件中的序列号和.class文件中的序列号做对比,如果不一致,报出序列号冲突

    解决方案:
        手动指定一个固定的序列号,不管如何修改类的成员,不会重新计算序列号
    抄袭:
        String
        private static final long serialVersionUID = -6849794470754667710L;
 */
public class Person implements Serializable{
    private static final long serialVersionUID = 42L;

    private String name;
    public int age;
    //private static int age;
    //private transient int age;

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
